Cumulative Plot Sales

Column

Plots Sold Across the World

Row

Plot Locations

Plots Sold in the US

World Plots

Column

Cumulative Plot Sales

country sold
United States 2599
United Kingdom 253
France 152
Japan 69
Switzerland 68
Australia 67
Italy 66
Netherlands 65
China 63
Germany 63
Spain 61
United Arab Emirates 58
Canada 54
Egypt 39
Hong Kong 37
India 36
Brazil 32
Uzbekistan 31
Russia 28
Mexico 25
Israel 24
Singapore 23
Vatican City 23
Monaco 21
Greece 20
Belgium 17
Panama 15
Peru 15
Saudi Arabia 14
South Korea 14
Austria 13
Turkey 13
Ukraine 12
Thailand 11
South Africa 8
Czech Republic 6
Portugal 6
Poland 5
Zimbabwe 5
coordinates 4
Indonesia 4
Iraq 4
Jordan 4
Malaysia 4
Philippines 4
NA 4
Argentina 3
Finland 3
Georgia 3
Iceland 3
Kazakhstan 3
Saint Lucia 3
Taiwan 3
Venezuela 3
Armenia 2
Azerbaijan 2
Bahamas 2
Cambodia 2
Colombia 2
Croatia 2
Cuba 2
French Polynesia 2
Ireland 2
Nepal 2
Ontario 2
Qatar 2
Saint Barthelemy 2
Bolivia 1
Bulgaria 1
Chad 1
Chile 1
Costa Rica 1
Cyprus 1
Dominican Republic 1
Estonia 1
Guatemala 1
Jamaica 1
Jerusalem District 1
Luxembourg 1
Malta 1
Montenegro 1
Norway 1
Palestinian Territories 1
Senegal 1
Serbia 1
Sri Lanka 1
Vietnam 1

Column

Day

Week

Month

Year

Total

US Plots

Column

Cumulative US Plot Sales

state sold
Texas 685
New York 456
California 380
Florida 218
Nevada 197
District of Columbia 62
Louisiana 53
Tennessee 53
Massachusetts 44
Illinois 42
Georgia 38
Pennsylvania 37
Washington 36
Minnesota 31
Ohio 29
New Jersey 22
Colorado 20
Indiana 20
Arizona 18
Michigan 17
Missouri 14
Alabama 13
Arkansas 12
Hawaii 11
North Carolina 11
Oklahoma 11
Oregon 10
Utah 10
Wisconsin 10
Maryland 8
Virginia 8
Wyoming 5
Kentucky 4
South Dakota 3
Connecticut 2
Maine 2
New Mexico 2
Kansas 1
Mississippi 1
Nebraska 1
New York L2GX5 1
Ontario 1

Column

Day

Week

Month

Year

Total

---
title: "SuperWorld Plot Sales"
output: 
  flexdashboard::flex_dashboard:
    social: menu
    source_code: embed
    theme: yeti
---

Cumulative Plot Sales
=====================================

Inputs {.sidebar}
-------------------------------------

```{r setup, include=FALSE, warning=FALSE, message=FALSE}
library(leaflet)
library(leaflet.extras)
library(sf)
library(tidyverse)
library(rnaturalearth)
library(rnaturalearthdata)
library(plotly)
library(usmap)
library(lubridate)

plots_sold = read_csv("C:/Users/rebec/SuperWorld_Plot_Recommendation/data/plots_sold.csv")[-1]
plots_sold$code = toupper(plots_sold$code)

us_plots = plots_sold[which(plots_sold$code == "US"),]
us_address = us_plots$address

state = c()
for (i in 1:length(us_address)){
  add = tail(unlist(str_split(us_address[i], pattern = ", ")), 2)[1]
  add = gsub(' [[:digit:]]+', '', add)
  state = c(state, add)
}

us_plots = cbind(us_plots, state) 

state_data = data.frame(state) %>%
  group_by(state) %>%
  summarise(sold = n())

```

*Total Plot Sales:*

```{r}
nrow(plots_sold)
```


*Top 10 Countries:* ```{r} plots_sold %>% group_by(country) %>% summarise(`plots sold` = n()) %>% arrange(-`plots sold`) %>% head(10) %>% knitr::kable() ```
*Top 10 US States:* ```{r} state_data %>% summarise(state, `plots sold` = sold) %>% arrange(-`plots sold`) %>% head(10) %>% knitr::kable() ``` Column {data-width=800} ------------------------------------- ### Plots Sold Across the World ```{r warning=FALSE, message=FALSE} world = ne_countries(scale = "medium", returnclass = "sf") df = st_sf(merge(plots_sold, world, by.x = "code", by.y = "iso_a2", all.x = FALSE, all.y = TRUE, returnclass = "sf")) df_plot = df %>% group_by(country, code) %>% summarise(sold = n()) %>% mutate(sold = ifelse(is.na(country), 0, sold)) %>% ggplot() + geom_sf(aes(fill = sold))+ scale_fill_gradient(trans = "log") + geom_sf_text(aes(label = code), size = 1) + theme(axis.title.x=element_blank(), axis.title.y=element_blank(), legend.title = element_text("Plots Sold")) + labs(caption = "Sold values are in log scale") + guides(fill = guide_colourbar(barwidth = 0.5, barheight = 10)) # df2 = df %>% # group_by(country, code) %>% # summarise(sold = n()) %>% # mutate(sold = ifelse(is.na(country), 0, sold)) # plot(df2["sold"], logz = TRUE, main = NULL, key.pos = 4) ggplotly(df_plot) %>% layout(annotations = list(x = 1, y = -0.1, text = "Sold values are in log scale", showarrow = F, xref='paper', yref='paper', xanchor='right', yanchor='auto', xshift=-10, yshift=80, font=list(size=15)), xaxis = list(autorange = TRUE), yaxis = list(autorange = TRUE) ) ``` Row ------------------------------------- ### Plot Locations ```{r} leaflet(plots_sold) %>% addTiles() %>% addCircles(lng = ~lon, lat = ~lat) %>% setView(lat = 37.0902, lng = -95.7129, zoom = 4) ``` ### Plots Sold in the US ```{r} us = plot_usmap(data = state_data, values = "sold", regions = "states") + theme(legend.position = "right") + scale_fill_continuous(name = "Plots Sold") ggplotly(us) ``` World Plots ===================================== Column {data-width=200} ------------------------------------- ### Cumulative Plot Sales ```{r} plots_sold %>% group_by(country) %>% summarize(sold = n()) %>% arrange(-sold) %>% knitr::kable() ``` Column {.tabset} ------------------------------------- ### Day ```{r} plots_today = plots_sold %>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 1) df_today = st_sf(merge(plots_today, world, by.x = "code", by.y = "iso_a2", all.x = FALSE, all.y = TRUE, returnclass = "sf")) plot = df_today %>% group_by(country, code) %>% summarise(sold = n()) %>% mutate(sold = ifelse(is.na(country), 0, sold)) %>% ggplot() + geom_sf(aes(fill = sold))+ scale_fill_gradientn(colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) + geom_sf_text(aes(label = code), size = 1) + theme(axis.title.x=element_blank(), axis.title.y=element_blank(), legend.title = element_text("Plots Sold")) + labs(caption = "Sold values are in log scale") + guides(fill = guide_colourbar(barwidth = 0.5, barheight = 10)) ggplotly(plot) %>% layout(xaxis = list(autorange = TRUE), yaxis = list(autorange = TRUE)) ``` ### Week ```{r} plots_week = plots_sold %>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 7) df_week = st_sf(merge(plots_week, world, by.x = "code", by.y = "iso_a2", all.x = FALSE, all.y = TRUE, returnclass = "sf")) plot = df_week %>% group_by(country, code) %>% summarise(sold = n()) %>% mutate(sold = ifelse(is.na(country), -Inf, sold)) %>% ggplot() + geom_sf(aes(fill = sold))+ scale_fill_gradientn(trans = "log", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) + geom_sf_text(aes(label = code), size = 1) + theme(axis.title.x=element_blank(), axis.title.y=element_blank(), legend.title = element_text("Plots Sold")) + labs(caption = "Sold values are in log scale") + guides(fill = guide_colourbar(barwidth = 0.5, barheight = 10)) ggplotly(plot) %>% layout(annotations = list(x = 1, y = -0.1, text = "Sold values are in log scale", showarrow = F, xref='paper', yref='paper', xanchor='right', yanchor='auto', xshift=-10, yshift=80, font=list(size=15)), xaxis = list(autorange = TRUE), yaxis = list(autorange = TRUE) ) ``` ### Month ```{r} plots_month = plots_sold %>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 30) df_month = st_sf(merge(plots_month, world, by.x = "code", by.y = "iso_a2", all.x = FALSE, all.y = TRUE, returnclass = "sf")) plot = df_month %>% group_by(country, code) %>% summarise(sold = n()) %>% mutate(sold = ifelse(is.na(country), -Inf, sold)) %>% ggplot() + geom_sf(aes(fill = sold))+ scale_fill_gradientn(trans = "log", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) + geom_sf_text(aes(label = code), size = 1) + theme(axis.title.x=element_blank(), axis.title.y=element_blank(), legend.title = element_text("Plots Sold")) + labs(caption = "Sold values are in log scale") + guides(fill = guide_colourbar(barwidth = 0.5, barheight = 10)) ggplotly(plot) %>% layout(annotations = list(x = 1, y = -0.1, text = "Sold values are in log scale", showarrow = F, xref='paper', yref='paper', xanchor='right', yanchor='auto', xshift=-10, yshift=80, font=list(size=15)), xaxis = list(autorange = TRUE), yaxis = list(autorange = TRUE) ) ``` ### Year ```{r} plots_year = plots_sold %>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 365) df_year = st_sf(merge(plots_year, world, by.x = "code", by.y = "iso_a2", all.x = FALSE, all.y = TRUE, returnclass = "sf")) plot = df_year %>% group_by(country, code) %>% summarise(sold = n()) %>% mutate(sold = ifelse(is.na(country), -Inf, sold)) %>% ggplot() + geom_sf(aes(fill = sold))+ scale_fill_gradientn(trans = "log", colors = colorspace::heat_hcl(5, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) + geom_sf_text(aes(label = code), size = 1) + theme(axis.title.x=element_blank(), axis.title.y=element_blank(), legend.title = element_text("Plots Sold")) + labs(caption = "Sold values are in log scale") + guides(fill = guide_colourbar(barwidth = 0.5, barheight = 10)) ggplotly(plot) %>% layout(annotations = list(x = 1, y = -0.1, text = "Sold values are in log scale", showarrow = F, xref='paper', yref='paper', xanchor='right', yanchor='auto', xshift=-10, yshift=80, font=list(size=15)), xaxis = list(autorange = TRUE), yaxis = list(autorange = TRUE) ) ``` ### Total ```{r} plot = df %>% group_by(country, code) %>% summarise(sold = n()) %>% mutate(sold = ifelse(is.na(country), -Inf, sold)) %>% ggplot() + geom_sf(aes(fill = sold))+ scale_fill_gradientn(trans = "log", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) + geom_sf_text(aes(label = code), size = 1) + theme(axis.title.x=element_blank(), axis.title.y=element_blank(), legend.title = element_text("Plots Sold")) + labs(caption = "Sold values are in log scale") + guides(fill = guide_colourbar(barwidth = 0.5, barheight = 10)) ggplotly(plot) %>% layout(annotations = list(x = 1, y = -0.1, text = "Sold values are in log scale", showarrow = F, xref='paper', yref='paper', xanchor='right', yanchor='auto', xshift=-10, yshift=80, font=list(size=15)), xaxis = list(autorange = TRUE), yaxis = list(autorange = TRUE) ) ``` US Plots ===================================== Column {data-width=200} ------------------------------------- ### Cumulative US Plot Sales ```{r} us_plots %>% group_by(state) %>% summarize(sold = n()) %>% arrange(-sold) %>% knitr::kable() ``` Column {.tabset} ------------------------------------- ### Day ```{r} us_today = us_plots %>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 1) %>% group_by(state) %>% summarise(sold = n()) us_today = plot_usmap(data = us_today, values = "sold", regions = "states") + theme(legend.position = "right") + # scale_fill_continuous(name = "Plots Sold") + scale_fill_gradientn(name = "Plots Sold", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) ggplotly(us_today) ``` ### Week ```{r} us_week = us_plots %>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 7) %>% group_by(state) %>% summarise(sold = n()) us_week = plot_usmap(data = us_week, values = "sold", regions = "states") + theme(legend.position = "right") + scale_fill_gradientn(name = "Plots Sold", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) ggplotly(us_week) ``` ### Month ```{r} us_month = us_plots%>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 30) %>% group_by(state) %>% summarise(sold = n()) us_month = plot_usmap(data = us_month, values = "sold", regions = "states") + theme(legend.position = "right") + scale_fill_gradientn(name = "Plots Sold", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) ggplotly(us_month) ``` ### Year ```{r} us_year = us_plots%>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 365) %>% group_by(state) %>% summarise(sold = n()) us_year = plot_usmap(data = us_year, values = "sold", regions = "states") + theme(legend.position = "right") + scale_fill_gradientn(name = "Plots Sold", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) ggplotly(us_year) ``` ### Total ```{r} us = plot_usmap(data = state_data, values = "sold", regions = "states") + theme(legend.position = "right") + scale_fill_gradientn(name = "Plots Sold", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) ggplotly(us) ```